package com.aaa.generics.demo04;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


/**
 * @author C-Q
 * @version 1.1.0
 * @Description: 泛型的上下限
 * 上限：extends 自身及其子类
 * 下限：super 自身及其父类
 * @date 2022/10/25
 */
public class Test02 {
    public static void main(String[] args) {
        SX<Integer> sx = new SX<>();
        sx.setVar(666);
        fan(sx);
        //没有出现错误，因为integer是number的子类

        SX<String> sx1 = new SX<>();
        sx1.setVar("字符串");
//        fan(sx1);
        //报错因为string不满足number子类及其自身的类型要求

        SX<Object> sx2 = new SX<>();
        sx2.setVar(56.7);

        fan01(sx2);
    }
    //上限子类及其本身
    //number父类Serializable
    public static void fan(SX<? extends Number> sx){
        sx.show();
    }
    //下限父类及其本身
    //String父类Serializable, Comparable<String>, CharSequence
    public static void fan01(SX<? super String> sx){

    }
}
//泛型类
@Data
@NoArgsConstructor
@AllArgsConstructor
class SX<T>{
    public T var ;
    public void show(){
        System.out.println(var+"=====var");
    }
}